package com.nextel.project.pedido.rms;

import com.nextel.project.pedido.bean.ArticuloPorNombreBean;
import com.nextel.project.util.BuscarListener;
import pe.com.nextel.rms.GestorRMS;
import pe.com.nextel.rms.Persistente;
import java.util.Stack;
import javax.microedition.rms.RecordEnumeration;
import pe.com.nextel.util.ArrayList;
import pe.com.nextel.util.Iterator;
import pe.com.nextel.util.List;



/**
 *
 * @author eespinoza
 */
public class RMSArticuloPorNombre extends GestorRMS {

    private ArticuloPorNombreBean bean = new ArticuloPorNombreBean();

    public RMSArticuloPorNombre() {
        super("INDXNOMARTICULO");
    }

    protected Persistente createObjectBean() {
        return bean;
    }

    public void grabarArticuloPorNombre(Stack objectStack) throws Exception {
        try {
            abrirRS();

            Object obj;
            ArticuloPorNombreBean beanTemp;
            int i = 0;
            List lista = new ArrayList();
            //mientras haya datos en la pila
            while ((obj = objectStack.pop()) != null) {

                beanTemp = (ArticuloPorNombreBean) obj;
                if (i % 50 == 0 && !lista.isEmpty()) {
                    guardar(lista);
                    lista.clear();
                    System.gc();
                }
                lista.add(beanTemp);
                i++;


            }

            if (!lista.isEmpty()) {
                guardar(lista);
                lista.clear();
                System.gc();
            }

            lista = null;

        } finally {

            cerrarRS();
        }
    }

    public void buscarPorNombreArticulos(String nombreArticulo, BuscarListener listener) throws Exception {

        try {
            abrirRS();

            RecordEnumeration en = enumerateRecords();

            List lista = new ArrayList();
            int i = 0;



            while (en.hasNextElement() && !listener.esFinalizadaBusqueda()) {


                int id = en.nextRecordId();

                Iterator it = getRecordList(id).iterator();

                while (it.hasNext() && !listener.esFinalizadaBusqueda()) {

                    ArticuloPorNombreBean beanTem = (ArticuloPorNombreBean) it.next();

                    if (beanTem.getNombreArticulo().indexOf(nombreArticulo) > -1) {
                        lista.add(beanTem);
                        i++;
                        
                    }

                    
                    
                    if ((i % 10 == 0) && !lista.isEmpty()) {
                        listener.agregarElementosVectorDatos(lista);
                        lista.clear();
          
                    }
                }

                if (!lista.isEmpty()) {
                    listener.agregarElementosVectorDatos(lista);
                    lista.clear();

                }
            }



             listener.finalizo();

            lista = null;

            System.gc();

        } finally {
            cerrarRS();
        }
    }
}
